package com.code2roc.jarmanage.servlet.depoly;

import com.code2roc.jarmanage.db.ProjectDB;
import com.code2roc.jarmanage.depoly.DepolyServiceFactory;
import com.code2roc.jarmanage.depoly.DepolyStatus;
import com.code2roc.jarmanage.model.ProjectDO;
import com.code2roc.jarmanage.model.Result;
import com.code2roc.jarmanage.util.CommonUtil;
import com.code2roc.jarmanage.util.ConvertUtil;
import com.code2roc.jarmanage.util.LogUtil;
import com.code2roc.jarmanage.util.ServiceUtil;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;

public class StopServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Result result = Result.okResult();
        HashMap paramMap = CommonUtil.getParamMap(req);
        String projectID = ConvertUtil.convert2String(paramMap.get("projectID"));
        ProjectDO entity = ProjectDB.selectOne(projectID);
        new DepolyServiceFactory().CreateDeployService().stop(entity);
        for (int i = 0; i < 10; i++) {
            String serviceStatus = new DepolyServiceFactory().CreateDeployService().getStatus(entity.getServiceName());
            if (serviceStatus == DepolyStatus.Stopped) {
                break;
            } else {
                try {
                    Thread.sleep(1000);
                } catch (Exception e) {
                    LogUtil.error(e);
                }
            }
        }
        resp.getWriter().println(result.toString());
    }
}
